package com.google.code.mochaccino.framework.ui.demo;
/*
 * Copyright 2012 Claude Houle claude.houle@gmail.com
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 * http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */

import ch.qos.logback.core.joran.spi.JoranException;
import com.google.code.mochaccino.framework.webstrap.WebstrapSingleContext;
import com.google.code.mochaccino.framework.webstrap.jetty.JettyModule;
import com.google.inject.Injector;
import com.google.inject.Module;
import com.google.inject.servlet.GuiceFilter;
import com.google.inject.servlet.GuiceServletContextListenerImpl;
import org.eclipse.jetty.server.Connector;
import org.eclipse.jetty.servlet.DefaultServlet;
import org.eclipse.jetty.servlet.ServletContextHandler;
import org.eclipse.jetty.servlets.GzipFilter;

/**
 *
 */
public class DemoServer extends WebstrapSingleContext {

	/** Constructor */
	public DemoServer( boolean keepAlive ) throws JoranException {
		super( keepAlive );
	}

	@Override
	public void configureContext( ServletContextHandler contextHandler, Injector injector ) {
		contextHandler.addEventListener( new GuiceServletContextListenerImpl( injector ) );
		contextHandler.addFilter( GzipFilter.class, "/*", null );
		contextHandler.addFilter( GuiceFilter.class, "/*", null );
		contextHandler.addServlet( DefaultServlet.class, "/" );
	}

	@Override
	public Connector[] getConnectors() {
		return new Connector[] { JettyModule.httpConnector( 8080 ) };
	}

	@Override
	protected Module[] getApplicationModules() {
		return new Module[] { new DemoModule() };
	}


	public static final void main( String[] args ) throws Exception {
		DemoServer s = new DemoServer( true );
		s.start( args );
	}
}
